package com.echo.im.engin.packet;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.util.Date;

/**
 * @author: echo
 * @time: 2024-08-22
 */
@Data
public abstract class MessagePacket extends Packet{

    /**
     * 只要是消息，都需要携带此字段，用来保证消息展示顺序和ack回包
     */
    private Long seqId;

    @NotNull(message = "消息类型不可为空")
    @Schema(description = " 群聊中消息类型 0:文字 1:图片 2:文件 3:语音 4:视频 撤回；" +
            "私聊中  消息类型 0:文字 1:图片 2:文件 3:语音 4:视频 10:撤回 11:已读")
    private Integer type;

    /**
     * 平台方不关心content 发送内容为双方约定 平台会只根据type去做一些额外动作
     */
    @Length(max = 1024, message = "发送内容长度不得大于1024")
    @NotEmpty(message = "发送内容不可为空")
    @Schema(description = "发送内容")
    private String content;

    @Schema(description = "发送时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date sendTime;
}
